1. Field of the Invention
The invention disclosed and claimed herein generally pertains to a method whereby a multiplicity of tasks, each performed by launching a software or other component, are carried out in a pre-specified order or arrangement. More particularly, the application pertains to a method of the above type wherein the launching of one component to perform its task has a pre-specified relationship to the launching of other task components. Even more particularly, the invention pertains to a method of the above type wherein launch descriptions for respectively launching each of the individual components are consolidated, in order to provide a single composite launch description for launching the multiplicity of tasks.
2. Description of the Related Art
Integrated Development Environments (IDEs), such as an open source product known as Eclipse, are currently the tool of choice for complex software development. These environments support the full development life cycle by combining a rich set of cooperating tools, such as visual user-interface builders, source-code editors, compilers and debuggers. IDEs organize software into projects, where a project typically corresponds to a platform-specific software component such as a Web service or its corresponding client. However, while IDEs are very useful in developing individual components, they tend to fall short in developing heterogeneous systems consisting of multiple components, such as distributed applications. A distributed application contains sub-applications that can run on multiple computational nodes. Thus, there is a need to augment IDEs to effectively manage collections of projects or other software components as coherent entities.
An important aspect of the application development cycle is the ability to launch the developed application for the purposes of testing and debugging. Accordingly, when developing a distributed application having multiple sub-applications, it is important to have the capability of launching the different sub-applications simultaneously, or in some other pre-specified relationship with one another. Such relationships may be provided by specifying launch parameters, which indicate such things as which sub-applications to launch, in what order, on what computers, and under what conditions. Such a specification, also referred to as a launch configuration, usefully should be stored so that it can be applied repeatedly in the development process. Moreover, in order to support structured organization, it would be desirable to provide a launch configuration with a hierarchical structure. This would enable grouping of sub-applications and launch parameters.
In current IDEs, the notion of a launch configuration is generally well known. However, mechanisms for flexibly composing launch configurations as well as the notion of a hierarchically organized aggregated launch arrangement that encompasses multiple launchings, are generally not known. In the absence of an aggregated launcher, the application developer has to manually perform several launch operations each time that testing and debugging is carried out. This process tends to be cumbersome and error-prone. In addition, when performing certain tests such as stress testing, the developer may want to launch multiple instances of an application, such as one instance of a server and many instances of a client. Again, in current IDEs this needs to be done manually.
One prior art IDE product provides the ability to launch a distributed application (called a “solution”) and thereby launches its constituent sub-application. However, such product has no capability of defining launch configurations independently of a solution, nor does it support hierarchical organization of the launch configuration. Such product only lists the sub-applications contained in the solution. Moreover, the parameters of an aggregated launch configuration are very restricted.
In IDEs that support Web tooling, such as Eclipse, there is only a limited notion of distributed launching. That is, when testing a Web application, the IDE launches both an application server and a browser client. However, while this feature may exemplify a “one click” way of launching multiple computational nodes, it is restricted to the Web-based client-server model, and has no notion of hierarchy or flexible composition.
In a traditional, non-IDE approach to development, scripts such as shell script are used for launching. This approach requires scripting expertise, and lacks the affordances of an IDE, such as a graphical interface. Furthermore, this approach does not provide a generic flexible method for composing launches.
From the above, it is seen that a flexible method for composing launch configurations is required for advancing the state of the art in modern distributed application development. In particular, providing such a method in an IDE, which also supports hierarchical composition, is particularly valuable. While this will be useful for distributed application development, it is anticipated that such a method would have other useful applications as well, such as in stress testing.